Application servers are entities in system and network environments in which various applications can execute or operate. In particular, application servers are dedicated to the efficient execution of processes, procedures, routines, scripts, and software code for supporting the functionalities of applications. Software developers can access application servers via various application programming interfaces (APIs).
The Java Platform, Enterprise Edition, Java EE, or J2EE are widely used platforms for server programming in the Java programming language. A J2EE container is a runtime entity that provides services to specialized Java components. Services provided by a container typically include life cycle management, security, deployment, and component-specific services. Containers are used in a wide variety of Java components, such as Enterprise Javabeans (EJB), Web pages, Java Server Pages (JSP), servlets, applets, and application clients.
For security information, J2EE containers typically cache their security caches in a Java Virtual Machine (JVM) to avoid round trip latency to third party sources like a database or a directory service. However, when these sources change information (e.g. passwords, login credentials, attributes, etc.), the security cache can become inconsistent with what is current.
Typically, J2EE containers employ a timeout feature to attempt to keep their security cache current. However, timeouts are generally insufficient in keeping security caches current in dynamic environments.
Therefore, it may be desirable to provide systems and methods for maintaining consistencies among security caches of application servers. In particular, it may be desirable to provide systems and methods for a provisioning server to provision security data updates to security caches of a requesting application server when updated data is available.